Spring Data JPA已经提供了一些独立的配置选项(比如,针对SQL日志),并且Spring Boot会暴露它们,针对hibernate的外部配置属性也更多些,最常见的选项如下:
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.hibernate.naming.physical-strategy=com.example.MyPhysicalNamingStrategy
spring.jpa.database=H2
spring.jpa.show-sql=true
ddl-auto
配置是个特殊情况,它的默认设置取决于是否使用内嵌数据库(是则默认值为create-drop
,否则为none
)。当本地EntityManagerFactory
被创建时,所有spring.jpa.properties.*
属性都被作为正常的JPA属性(去掉前缀)传递进去了。
Spring Boot提供一致的命名策略,不管你使用什么Hibernate版本。如果使用Hibernate 4,你可以使用spring.jpa.hibernate.naming.strategy
进行自定义;Hibernate 5定义一个Physical
和Implicit
命名策略:Spring Boot默认配置SpringPhysicalNamingStrategy
,该实现提供跟Hibernate 4相同的表结构。如果你情愿使用Hibernate 5默认的,可以设置以下属性:
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl